import { defineStore } from 'pinia';

const STORE_ID = 'customer';
const ACCOUNT_DEFAULT = '';
const TOKEN_DEFAILT = '';

const options = {
    state: () => {
        return { 
            account: ACCOUNT_DEFAULT, 
            token: TOKEN_DEFAILT 
        }
    },
    getters: {
        // 获取登录状态
        logined(state) {
            // 仅当 account 和 token 都存在时返回 true
            return state.account && state.token;
        },
        getAccount(state) {
            return state.account
        },
        getToken(state) {
            return state.token
        }
    },
    actions: {
        // 登录
        signIn(account, token) {
            // 将已登录用户的账号保存起来
            this.account = account;
            this.token = token;
        },
        // 登出
        signOut() {
            // 将 account 修改为默认值
            this.account = ACCOUNT_DEFAULT;
            this.token = TOKEN_DEFAILT;
        }
    },
    // 通过`pinia-plugin-persist`提供的支持实现状态持久化
    persist: {
        enabled: true,
        strategies: [
            { 
                key: STORE_ID,
                storage: localStorage 
            }
        ]
    }
}

// 定义Store
const useLoginStore = defineStore('login', options);

// 采用默认导出的方式将 useLoginStore 导出
export default useLoginStore;